package com.uade.empresasdistribuidas.entities;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name= "Clientes") 
public abstract class ClienteDTO {
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="numeroCliente" ,unique = true, nullable = false)
	private Integer numeroCliente;
	
	@Column(name="Nombre", nullable=false, length=30)
	private String nombre;
	
	@Column(name="telefono", nullable=false, length=30)
	private String telefono;
	
	@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	@JoinColumn(name="CodigoDireccion")
	private DireccionDTO direccion;
	
	@OneToMany (cascade=CascadeType.ALL, fetch = FetchType.LAZY)
	@JoinColumn(name="numeroCliente")
	private List<FacturaDTO> facturas;
	
	
	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY,mappedBy="cliente")
	private List<PedidoDTO> pedidos;


	public Integer getNumeroCliente() {
		return numeroCliente;
	}


	public void setNumeroCliente(Integer numeroCliente) {
		this.numeroCliente = numeroCliente;
	}


	public String getNombre() {
		return nombre;
	}


	public void setNombre(String nombre) {
		this.nombre = nombre;
	}


	public String getTelefono() {
		return telefono;
	}


	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}


	public DireccionDTO getDireccion() {
		return direccion;
	}


	public void setDireccion(DireccionDTO direccion) {
		this.direccion = direccion;
	}


	public List<FacturaDTO> getFacturas() {
		return facturas;
	}


	public void setFacturas(List<FacturaDTO> facturas) {
		this.facturas = facturas;
	}


	public List<PedidoDTO> getPedidos() {
		return pedidos;
	}


	public void setPedidos(List<PedidoDTO> pedidos) {
		this.pedidos = pedidos;
	}
	
	
	
}
